package org.xobo.finance.helper.invoice.entity;


import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Table;

import org.xobo.finance.helper.base.domain.BaseDomain;

import com.bstek.dorado.annotation.PropertyDef;

/**
 */
@Entity
@Table(name = "Invoice")
public class Invoice extends BaseDomain {


  /**
   * 
   */
  private static final long serialVersionUID = 1L;

  @PropertyDef(label = "发票代码", description = "左上角")
  private String invoiceCode;
  @PropertyDef(label = "发票号码", description = "No. xxxx")
  private String invoiceNo;
  @PropertyDef(label = "开票日期")
  private Date invoiceDateIssued;
  @PropertyDef(label = "作废标志")
  private Boolean hasCancelled;

  @PropertyDef(label = "发票状态", description = "正常发票, 填开作废，负数发票, 负数作废")
  private Integer invoiceStatus;
  @PropertyDef(label = "发票类型", description = "1.专用发票16%，2.普通发票6%,3.普通发票0%")
  private Integer invoiceType;

  @PropertyDef(label = "类别代码")
  private String invoiceCategory;

  @PropertyDef(label = "购买方名称")
  private String buyerName;
  @PropertyDef(label = "购买方纳税人识别号")
  private String buyerTaxpayerNo;
  @PropertyDef(label = "购买方地址")
  private String buyerAddress;
  @PropertyDef(label = "购买方电话")
  private String buyerTel;
  @PropertyDef(label = "购买方开户行")
  private String buyerBankName;
  @PropertyDef(label = "购买方开户行账号")
  private String buyerBankAccount;


  @PropertyDef(label = "货物或服务")
  private String goodsOrServices;
  @PropertyDef(label = "规格型号")
  private String specifications;
  @PropertyDef(label = "单位")
  private String unit;
  @PropertyDef(label = "数量")
  private String quantity;
  @PropertyDef(label = "单价")
  private String unitPrice;
  @PropertyDef(label = "金额")
  private BigDecimal amount;
  @PropertyDef(label = "税率")
  private BigDecimal taxRate;
  @PropertyDef(label = "税额")
  private BigDecimal taxAmount;
  @PropertyDef(label = "价税合计")
  private BigDecimal pricePlusTaxes;

  @PropertyDef(label = "销售方名称")
  private String sellerName;
  @PropertyDef(label = "销售方纳税人识别号")
  private String sellerTaxpayerNo;
  @PropertyDef(label = "销售方地址")
  private String sellerAddress;
  @PropertyDef(label = "销售方电话")
  private String sellerTel;
  @PropertyDef(label = "销售方开户行")
  private String sellerBankName;
  @PropertyDef(label = "销售方开户行账号")
  private String sellerBankAccount;


  @PropertyDef(label = "备注")
  private String remark;

  @PropertyDef(label = "收款人")
  private String payeeName;
  @PropertyDef(label = "复核")
  private String reviewName;
  @PropertyDef(label = "开票人")
  private String drawerName;

  private Long companyId;

  public String getInvoiceCode() {
    return invoiceCode;
  }

  public void setInvoiceCode(String invoiceCode) {
    this.invoiceCode = invoiceCode;
  }

  public String getInvoiceNo() {
    return invoiceNo;
  }

  public void setInvoiceNo(String invoiceNo) {
    this.invoiceNo = invoiceNo;
  }

  public Date getInvoiceDateIssued() {
    return invoiceDateIssued;
  }

  public void setInvoiceDateIssued(Date invoiceDateIssued) {
    this.invoiceDateIssued = invoiceDateIssued;
  }

  public Boolean getHasCancelled() {
    return hasCancelled;
  }

  public void setHasCancelled(Boolean hasCancelled) {
    this.hasCancelled = hasCancelled;
  }

  public Integer getInvoiceType() {
    return invoiceType;
  }

  public void setInvoiceType(Integer invoiceType) {
    this.invoiceType = invoiceType;
  }

  public String getInvoiceCategory() {
    return invoiceCategory;
  }

  public void setInvoiceCategory(String invoiceCategory) {
    this.invoiceCategory = invoiceCategory;
  }

  public String getBuyerName() {
    return buyerName;
  }

  public void setBuyerName(String buyerName) {
    this.buyerName = buyerName;
  }

  public String getBuyerTaxpayerNo() {
    return buyerTaxpayerNo;
  }

  public void setBuyerTaxpayerNo(String buyerTaxpayerNo) {
    this.buyerTaxpayerNo = buyerTaxpayerNo;
  }

  public String getBuyerAddress() {
    return buyerAddress;
  }

  public void setBuyerAddress(String buyerAddress) {
    this.buyerAddress = buyerAddress;
  }

  public String getBuyerTel() {
    return buyerTel;
  }

  public void setBuyerTel(String buyerTel) {
    this.buyerTel = buyerTel;
  }

  public String getBuyerBankName() {
    return buyerBankName;
  }

  public void setBuyerBankName(String buyerBankName) {
    this.buyerBankName = buyerBankName;
  }

  public String getBuyerBankAccount() {
    return buyerBankAccount;
  }

  public void setBuyerBankAccount(String buyerBankAccount) {
    this.buyerBankAccount = buyerBankAccount;
  }

  public String getGoodsOrServices() {
    return goodsOrServices;
  }

  public void setGoodsOrServices(String goodsOrServices) {
    this.goodsOrServices = goodsOrServices;
  }

  public String getSpecifications() {
    return specifications;
  }

  public void setSpecifications(String specifications) {
    this.specifications = specifications;
  }

  public String getUnit() {
    return unit;
  }

  public void setUnit(String unit) {
    this.unit = unit;
  }

  public String getQuantity() {
    return quantity;
  }

  public void setQuantity(String quantity) {
    this.quantity = quantity;
  }

  public String getUnitPrice() {
    return unitPrice;
  }

  public void setUnitPrice(String unitPrice) {
    this.unitPrice = unitPrice;
  }

  public BigDecimal getAmount() {
    return amount;
  }

  public void setAmount(BigDecimal amount) {
    this.amount = amount;
  }

  public BigDecimal getTaxRate() {
    return taxRate;
  }

  public void setTaxRate(BigDecimal taxRate) {
    this.taxRate = taxRate;
  }

  public BigDecimal getTaxAmount() {
    return taxAmount;
  }

  public void setTaxAmount(BigDecimal taxAmount) {
    this.taxAmount = taxAmount;
  }

  public BigDecimal getPricePlusTaxes() {
    return pricePlusTaxes;
  }

  public void setPricePlusTaxes(BigDecimal pricePlusTaxes) {
    this.pricePlusTaxes = pricePlusTaxes;
  }

  public String getSellerName() {
    return sellerName;
  }

  public void setSellerName(String sellerName) {
    this.sellerName = sellerName;
  }

  public String getSellerTaxpayerNo() {
    return sellerTaxpayerNo;
  }

  public void setSellerTaxpayerNo(String sellerTaxpayerNo) {
    this.sellerTaxpayerNo = sellerTaxpayerNo;
  }

  public String getSellerAddress() {
    return sellerAddress;
  }

  public void setSellerAddress(String sellerAddress) {
    this.sellerAddress = sellerAddress;
  }

  public String getSellerTel() {
    return sellerTel;
  }

  public void setSellerTel(String sellerTel) {
    this.sellerTel = sellerTel;
  }

  public String getSellerBankName() {
    return sellerBankName;
  }

  public void setSellerBankName(String sellerBankName) {
    this.sellerBankName = sellerBankName;
  }

  public String getSellerBankAccount() {
    return sellerBankAccount;
  }

  public void setSellerBankAccount(String sellerBankAccount) {
    this.sellerBankAccount = sellerBankAccount;
  }

  public String getRemark() {
    return remark;
  }

  public void setRemark(String remark) {
    this.remark = remark;
  }

  public String getPayeeName() {
    return payeeName;
  }

  public void setPayeeName(String payeeName) {
    this.payeeName = payeeName;
  }

  public String getReviewName() {
    return reviewName;
  }

  public void setReviewName(String reviewName) {
    this.reviewName = reviewName;
  }

  public String getDrawerName() {
    return drawerName;
  }

  public void setDrawerName(String drawerName) {
    this.drawerName = drawerName;
  }

  public Long getCompanyId() {
    return companyId;
  }

  public void setCompanyId(Long companyId) {
    this.companyId = companyId;
  }

  public Integer getInvoiceStatus() {
    return invoiceStatus;
  }

  public void setInvoiceStatus(Integer invoiceStatus) {
    this.invoiceStatus = invoiceStatus;
  }

}


